﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.Diagnostics;
using System.Text.RegularExpressions;

namespace pos_trab_2.View
{
    public partial class InputBox : Form
    {

        private string regexNivelSeguranca = @"^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).{4,8}$";

        public InputBox(ControleSenha owner)
        {
            InitializeComponent();
            this.Owner = owner;
        }

        private void btnConfirmar_Click(object sender, EventArgs e)
        {
            if (this.txtPalavraChave1.Text.Equals(this.txtPalavraChave2.Text))
            {
                if (Regex.IsMatch(this.txtPalavraChave1.Text, regexNivelSeguranca))
                {
                    Type t = this.Owner.GetType();
                    if (t == typeof(ControleSenha))
                    {
                        t.GetProperty("Chave").SetValue(this.Owner, this.txtPalavraChave1.Text, null);
                        t.GetMethod("adicionaLinha").Invoke(this.Owner, null);
                    }
                    this.Dispose();
                }
                else
                {
                    MessageBox.Show("A palavra-chave informada não se enquadra nos requisitos mínimos de Segurança. \n Por favor, informe uma palavra-chave que tenha 4 a 8 dígitos, incluindo caracteres numéricos e alfanuméricos sendo eles maiúsculos e minúsculos .");
                    this.limpaCampos();
                }
            }
            else
            {
                MessageBox.Show("A palavra-chave informada não confere. Por favor, informe novamente a palavra-chave.");
                this.limpaCampos();
            }
        }

        private void limpaCampos()
        {
            this.txtPalavraChave1.Text = string.Empty;
            this.txtPalavraChave2.Text = string.Empty;
            this.txtPalavraChave1.Focus();
        }
    }
}
